home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / develop / symcoff.arc / PLAHREAD.C < prev    next >
Text File  |  1989-05-02  |  4KB  |  81 lines

  1. static char *sccsid[]={"@(#)pldahread.c 2.1",
  2. "Copyright 1985 by Motorola Inc."};
  3. #include <stdio.h>
  4. #ifdef PCPORT
  5. #include <stdlib.h>
  6. #include "pcport.h"     /*PC-PORT*/
  7. #endif
  8. #include "par.h"
  9. #include "pfilehdr.h"
  10. #include "pldfcn.h"
  11.  
  12. #include "pldf_dcl.h"         /*PC-PORT*/
  13. /*********************** PLDAHREAD *************************************gs##*/
  14. /*                                                                        ##*/
  15. /*                                                                        ##*/
  16. /* Written by:  Michael Greenberg - MIL                                   ##*/
  17. /*                                                                        ##*/
  18. /* ACTION:                                                                ##*/
  19. /*      Read the archive header of a member of an archive file.           ##*/
  20. /*                                                                        ##*/
  21. /* SYNOPSIS:                                                              ##*/
  22.       int pldahread(ldptr, arhead)                                      /*##*/
  23. /*    ----------------------------                                        ##*/
  24. register LDFILE *ldptr;                                                 /*##*/
  25. register ARCHDR *arhead;                                                /*##*/
  26. /*                                                                        ##*/
  27. /*************************************************************************##*/
  28. {
  29.         register char   *p, *q;
  30.     register int    i;
  31. #ifndef PCPORT
  32.     long        atol();
  33. #endif
  34.         struct ar_hdr   arhdr;
  35.  
  36.         if(TYPE(ldptr) != PLDARMAG)
  37.                 return(FAILURE);
  38.  
  39.         fseek(IOPTR(ldptr), (long) (OFFSET(ldptr) - sizeof (struct ar_hdr)), 0);
  40.         if(fread(&arhdr, sizeof(struct ar_hdr), 1, IOPTR(ldptr)) != 1)
  41.                 return(FAILURE);
  42.  
  43.         for(p=arhead->ar_name, q=arhdr.ar_name, i=0;i++ < 14;p++)
  44.             if((*p = *q++) == '/')
  45.                 break;
  46.         --i;
  47.         while(i++ < 14)
  48.                 *p++ = NULL;
  49.         arhead->ar_date = atol(arhdr.ar_date);
  50.         arhead->ar_uid = atoi(arhdr.ar_uid);
  51.         arhead->ar_gid = atoi(arhdr.ar_gid);
  52.         arhead->ar_mode = atol(arhdr.ar_mode);
  53.         arhead->ar_size = atol(arhdr.ar_size);
  54. }
  55.  
  56. /****************** _FLDAHREAD *****************************************gs##*/
  57. /*                                                                        ##*/
  58. /* ACTION:                                                                ##*/
  59. /*      Read the archive header record of an archive member and return    ##*/
  60. /*      the size of the member.                                           ##*/
  61. /*                                                                        ##*/
  62. /* SYNOPSIS:                                                              ##*/
  63.       int _fpldahread(ldptr)                                            /*##*/
  64. /*    ----------------------                                              ##*/
  65. register LDFILE *ldptr;                                                 /*##*/
  66. /*                                                                        ##*/
  67. /*************************************************************************##*/
  68. {
  69.  
  70.         struct ar_hdr arhdr;
  71.  
  72.         if(TYPE(ldptr) != PLDARMAG)
  73.                 return(FAILURE);
  74.         fseek(IOPTR(ldptr), (long) (OFFSET(ldptr) - sizeof (struct ar_hdr)), 0);
  75.         if(fread(&arhdr, sizeof(struct ar_hdr), 1, IOPTR(ldptr)) != 1)
  76.                 return(FAILURE);
  77.         return(atoi(arhdr.ar_size));
  78. }
  79. /* Copyright 1985 by Motorola Inc. */
  80. 
  81.